<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>


        // js代码执行分两个阶段
        //   预编译阶段
        //       1 把所有var 声明的变量提升到代码的最上面
        //       2 把所有的具名函数提升到最上面
        //   代码自上而下执行的阶段




        // console.log(a) ;   // error  a is not defined 





    // 你看到的代码

    //    console.log(a) ;     // undefined ?????

    //     var a = 1 ;

    //     console.log(a) ;    // 1



    //     fn() ;

    //     function fn() {
    //         console.log(666) ;
    //     }

    
    // js真正的执行顺序

    // 1 提升var
    var a ;
    // 2 提升函数
    function fn() {
        console.log(666) ;
    }
    // 3 代码从上而下执行
    console.log(a) ;    // undefined
    a = 1 ;
    console.log(a) ;   // 1
    fn() ;   

    </script>
    
</body>
</html>